package com.zijidelu.luframework.base.model.crud;

/**
 * CRUD状态生命周期
 *
 * @author ZIJIDELU
 * @datetime 2025/11/17 23:47
 */
public interface CrudStateLifecycle {
    /**
     * 获取当前CRUD状态
     *
     * @return 当前CRUD状态
     */
    CrudState getCrudState();

    /**
     * 设置当前CRUD状态
     *
     * @param crudState 当前CRUD状态
     */
    void setCrudState(CrudState crudState);

    /**
     * 标记为创建状态
     */
    default void markAsCreateState() {
        setCrudState(CrudState.CREATE);
    }

    /**
     * 标记为更新状态
     */
    default void markAsUpdateState() {
        setCrudState(CrudState.UPDATE);
    }

    /**
     * 标记为删除状态
     */
    default void markAsDeleteState() {
        setCrudState(CrudState.DELETE);
    }

    /**
     * 标记为读取状态
     */
    default void markAsReadState() {
        setCrudState(CrudState.READ);
    }

    default boolean isCreate() {
        return getCrudState() == CrudState.CREATE;
    }

    default boolean isUpdate() {
        return getCrudState() == CrudState.UPDATE;
    }

    default boolean isDelete() {
        return getCrudState() == CrudState.DELETE;
    }

    default boolean isRead() {
        return getCrudState() == CrudState.READ;
    }

}
